package lemonadeChange;

import java.util.HashMap;
import java.util.Map;

public class Solution {
    public boolean lemonadeChange(int[] bills) {
        Map<Integer,Integer> map = new HashMap<>();
        map.put(5,0);
        map.put(10,0);
        map.put(20,0);
        for (int i = 0; i < bills.length; i++) {
            map.put(bills[i],map.get(bills[i])+1);
            int need = bills[i] - 5;
            if(need == 5){
                if(map.get(5)>0){
                    map.put(5,map.get(5)-1);
                }else {
                    return false;
                }
            }else if(need == 15){
                if(map.get(10)>0&&map.get(5)>0){
                    map.put(10,map.get(10)-1);
                    map.put(5,map.get(5)-1);
                }else if(map.get(5)>=3){
                    map.put(5,map.get(5)-3);
                }else {
                    return false;
                }
            }
        }
        return true;
    }
}
//class Solution {
//    public boolean lemonadeChange(int[] bills) {
//        int five = 0, ten = 0;
//        for (int bill : bills) {
//            if (bill == 5) {
//                five++;
//            } else if (bill == 10) {
//                if (five == 0) {
//                    return false;
//                }
//                five--;
//                ten++;
//            } else {
//                if (five > 0 && ten > 0) {
//                    five--;
//                    ten--;
//                } else if (five >= 3) {
//                    five -= 3;
//                } else {
//                    return false;
//                }
//            }
//        }
//        return true;
//    }
//}
